package com.qf.service;

import com.qf.dao.ClassesDao;
import com.qf.entity.Classes;
import com.qf.util.ConnectionUtils;

import java.util.List;

/**
 * description: 班级的业务层
 * author: Ken
 * 公众号：Java架构栈
 */
public class ClassesService {

    private ClassesDao classesDao = new ClassesDao();

    /**
     * 查询班级列表
     * @return
     */
    public List<Classes> queryCls(){
        return classesDao.queryAll();
    }

    /**
     * 根据班级id查询班级信息
     * @return
     */
    public Classes queryClsOne(String cid){
       return classesDao.queryById(cid);
    }

    /**
     * 新增班级
     * @param classes
     * @return
     */
    public int insertCls(Classes classes){
        return classesDao.insert(classes);
    }

    /**
     * 根据多个id删除班级
     * @return
     */
    public int deleteClsByIds(String[] ids){

        //???????????????? 考虑班级和学生的关联情况
        //把班级关联的学生全部一起删掉
        //或者把关联的学生外键全部解除

        //删除班级
        return classesDao.deleteByIds(ids);
    }


    /**
     * 修改班级
     * @param classes
     * @return
     */
    public int updateCls(Classes classes) {
        return classesDao.updateById(classes);
    }

    /**
     * 修改对应的班级人数  将id对应的班级人数type（0-增加 1-减少）对应的count人
     * @param id - 修改的班级id
     * @param count - 修改的班级人数
     * @param type - 0-增加 1-减少
     * @return
     */
    public int updateClsCount(Integer id, Integer count, Integer type) throws Exception {
        int i = -1;
        try {
            //开启事务
            ConnectionUtils.begin();
            //执行业务 - 想象层很复杂的业务
            i = classesDao.updateClsCount(id, count, type);
            //提交事务
            ConnectionUtils.commit();
        } catch (Exception e) {
            //回滚事务
            ConnectionUtils.rollback();
            throw e;
        }
        return i;
    }
}
